package Logica.Entidades;

public class Puntaje {
	
	private int calificacion;
	private String tarjeta;
	private int esFigura;
	private int golesRecibidos;
	private int golesEnContra;
	private int golesConvertidos;
	private int jugoMasDe20;
	private int penalesConvertidos;
	private int penalesErrados;
	
	public String getTarjeta() {
		return tarjeta;
	}

	public int getGolesRecibidos() {
		return golesRecibidos;
	}

	public int getGolesEnContra() {
		return golesEnContra;
	}

	public int getGolesConvertidos() {
		return golesConvertidos;
	}

	public int getPenalesConvertidos() {
		return penalesConvertidos;
	}

	public int getPenalesErrados() {
		return penalesErrados;
	}

	public int getPenalesAtajados() {
		return penalesAtajados;
	}

	public int getGolesRecibidosPorElEquipo() {
		return golesRecibidosPorElEquipo;
	}

	public Jugador getJugador() {
		return jugador;
	}

	private int penalesAtajados;
	private int golesRecibidosPorElEquipo;
	
	private Boolean puntajeCalculado;
	private Jugador jugador;
	private Fecha fecha;
	
	public Puntaje(int c, String t, int eF, int gR, int gEC, int gC, int j, int pC, int pE, int pA, Jugador ju, int gRpEq){
		calificacion = c;
		tarjeta = t;
		esFigura = eF;
		golesRecibidos = gR;
		golesEnContra = gEC;
		golesConvertidos = gC;
		jugoMasDe20 = j;
		penalesConvertidos = pC;
		penalesErrados = pE;
		penalesAtajados =  pA;
		puntajeCalculado = false;
		jugador = ju;
		golesRecibidosPorElEquipo = gRpEq;
	}
	
	public Puntaje(Integer j, Jugador ju) {
		jugoMasDe20 = j;
		jugador = ju;
		puntajeCalculado = false;
	}

	public Puntaje(int j, Jugador ju, String t) {
		jugoMasDe20 = j;
		jugador = ju;
		tarjeta = t;
		puntajeCalculado = false;
	}

	public int getCalificacion() {
		return calificacion;
	}
	
	public int getEsFigura() {
		return esFigura;
	}
	
	public int getJugoMasDe20() {
		return jugoMasDe20;
	}
	
	public Fecha getFecha() {
		return fecha;
	}

	public int sumatoriaDePuntos() {
		int puntos = calificacion;
		
		if(esFigura != 0)
			puntos += 4;
		
		String posicion = jugador.getPosicion();
		if(posicion.equals("DEL"))
			puntos += golesConvertidos*4;
		if(posicion.equals("VOL"))
			puntos += golesConvertidos*5;
		if(posicion.equals("DEF")){
			puntos += golesConvertidos*6;
			if(golesRecibidosPorElEquipo == 0){
				// Se suma +1 por valla invicta
				puntos += 1;
			}
		}
		if(posicion.equals("ARQ")){
			puntos += golesConvertidos*8;
			puntos -= golesRecibidos;
			puntos += penalesAtajados*4;
			if(golesRecibidosPorElEquipo == 0){
				// Se suma +2 por valla invicta
				puntos += 2;
			}
		}
		
		puntos += penalesConvertidos*3;
		puntos -= golesEnContra*2;
		
		if(tarjeta.equals("Amarilla"))
			puntos -= 2;
		if(tarjeta.equals("Roja"))
			puntos -= 4;
		
		puntos -= penalesErrados*3;
		puntajeCalculado = true;
		
		return puntos;
	}
	
	public Boolean getPuntajeCalculado(){
		return puntajeCalculado;
	}
	
	public boolean esPuntajeVacio(){
		return (calificacion == 0) && (tarjeta == null) && (esFigura == 0) && (golesRecibidos == 0) && (golesEnContra == 0) && (golesConvertidos == 0) && (jugoMasDe20 == 0) && (penalesConvertidos == 0) && (penalesErrados == 0);

	}

	public void setGolesRecibidosPorElEquipo(int grbeq) {
		golesRecibidosPorElEquipo = grbeq;
	}
}